封装type方法
type([]) --> array
type({}) --> object
type(function) --> object
type(new Number()) --> number Object
typeof(123) --> number

<script type="text/javascript">
	//1.分两类：原始值和引用值	2.区分引用值
	function type(target){
		var ret = typeof(target);
		var template = {
			"[object Array]" : "array",//数组对象
			"[object Object]" : "object",//对象对象
			"[object Number]" : "number - object",//包装类对象
			"[object Boolean]" : "boolean - object",
			"[object String]" : "string - object"
		}

		if(target === null){
			return 'null';
		}else if(ret == "object"){
			var str = Object.prototype.toString.call(target);//
			return template[str];
		}else{
			return ret;//返回原始值或function
		}
	}

	console.log( type(new Number(123)) );//number类型的包装类对象，对象形式的数字
</script>